package T15;

import java.util.Calendar;

public class Test1 {
    public static void main(String[] args) {
        // 设置要打印月历的年和月，这里以2022年5月为例
        int year = 2022;
        int month = Calendar.MAY;

        Calendar calendar = Calendar.getInstance();
        calendar.set(year, month, 1); // 设置为该月的第一天

        // 获取该月的总天数
        int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
        // 获取该月第一天是星期几（1代表星期日，2代表星期一，以此类推）
        int firstDayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);

        // 打印月份和年份标题
        System.out.printf("\t\t\t%d年%02d月\n", year, month + 1);
        // 打印星期标题
        System.out.println("一\t二\t三\t四\t五\t六\t日");

        // 打印前面的空格，将月历起始位置对齐到该月第一天对应的星期位置
        for (int i = 1; i < firstDayOfWeek; i++) {
            System.out.print("\t");
        }

        // 循环打印日期
        for (int i = 1; i <= daysInMonth; i++) {
            System.out.print(i + "\t");
            // 判断是否为星期日，若是则换行
            if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
                System.out.println();
            }
            // 将日期加1，以便获取下一天的信息
            calendar.add(Calendar.DAY_OF_MONTH, 1);
        }
    }
}